﻿using System.Data;
using System.Data.Common;
using POS.BusinessEntities;

namespace POS.DataObjects
{
    public sealed class DOSeguridad : DOBase
    {
        private DOSeguridad(){}

        #region Declarations

        private const string PermisosXUsuarioGet = "PermisosXUsuarioGet";

        private const string columnaCodigo = "codigo";
        private const string columnaNombre = "nombre";
        private const string columnaTipo = "tipo";
        
        #endregion

        #region Methods: Public
        public static BEPermisoCollection GetMenu(string userId)
        {
            var result = new BEPermisoCollection();
            BEPermiso permiso;
            var tipoMenu = PermisoTipo.Menu;
            var tipoAccion = PermisoTipo.Accion; 

            DbCommand command = Db.GetStoredProcCommand(PermisosXUsuarioGet);
            Db.AddInParameter(command, "@Usuario", DbType.String, userId);
            Db.AddInParameter(command, "@Tipo", DbType.String, "M");

            DataSet data = Db.ExecuteDataSet(command);

            if (data.Tables.Count == 1)
            {
                foreach (DataRow row in data.Tables[0].Rows)
                {
                    permiso = new BEPermiso();
                    permiso.Codigo = row[columnaCodigo].ToString();
                    permiso.Nombre = row[columnaNombre].ToString();
                    permiso.Tipo = row[columnaTipo].ToString() == "A" ? tipoAccion : tipoMenu;
                    result.Add(permiso);
                }
            }
            return result;
        }

        #endregion

        #region Methods: Non-Public
        #endregion
    }
}
